/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;

import javax.faces.model.SelectItem;

/**
 *
 * @author 
 */
public class Venta implements Serializable{
    private String id_venta;
    private String estado;
    private Date fecha_venta;
    private Cliente obj_cli=new Cliente();
    private Empleado obj_emp=new Empleado();
    private double precio_total;

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Date getFecha_venta() {
        return fecha_venta;
    }

    public void setFecha_venta(Date fecha_venta) {
        this.fecha_venta = fecha_venta;
    }

    public String getId_venta() {
        return id_venta;
    }

    public void setId_venta(String id_venta) {
        this.id_venta = id_venta;
    }

    public Cliente getObj_cli() {
        return obj_cli;
    }

    public void setObj_cli(Cliente obj_cli) {
        this.obj_cli = obj_cli;
    }

    public Empleado getObj_emp() {
        return obj_emp;
    }

    public void setObj_emp(Empleado obj_emp) {
        this.obj_emp = obj_emp;
    }

    public double getPrecio_total() {
        return precio_total;
    }

    public void setPrecio_total(double precio_total) {
        this.precio_total = precio_total;
    }
    
     public static boolean agregarVenta (Venta obj_a){
       boolean a=false;
      Connection conexion = null;
      try {
          conexion= ControladorBD.darConexionBD();
          CallableStatement st;
          st=conexion.prepareCall("{call sp_Registrar_Venta(?,?,?,?,?)}");
          conexion.setAutoCommit(false);
         
          //st.setDate(1,obj_a.getFecha_venta()); 
         // st.setDate(1, new Date(obj_a.getFecha_venta().getTime()));
          st.setDate(1, new java.sql.Date(obj_a.getFecha_venta().getTime())); 
          st.setString(2,obj_a.getObj_cli().getId_cliente());
          st.setString(3,obj_a.getObj_emp().getId_empleado());
          st.setDouble(4,obj_a.getPrecio_total());
          st.registerOutParameter(5, java.sql.Types.VARCHAR); //intentar extraer el parametro de salida y darselo al codigo
          st.execute();
          if(st.getString(5)!=null){
              a=true;
          }
          st.close();
          conexion.setAutoCommit(true);
          conexion.close();
     }catch(Exception error){
          System.out.println("Error en agregarVenta:"+error.getMessage());
          error.printStackTrace();
    }
      return a;
    }
      public static ArrayList<Venta>getCargarVenta(){
        ArrayList<Venta> arreglo=null;
        Venta obj = null;
        Connection conexion = null;
        ResultSet rs= null;

        try{
            conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall("{call sp_Listar_Venta()}");
            rs=st.executeQuery();
            //st(1,estado);
            if(rs.next()){
                arreglo=new ArrayList<Venta>();
                do{
                    obj=new Venta();
                    obj.setId_venta(rs.getString("id_venta"));
                    obj.setEstado(rs.getString("estado"));
                    obj.setFecha_venta(rs.getDate("fecha_venta"));
                    Cliente ob=new Cliente();
                    ob.setId_cliente(rs.getString("id_cliente"));
                    ob.setApe_nombre(rs.getString("ape_nombre"));
                    obj.setObj_cli(ob);
                    Empleado ob1=new Empleado();
                    ob1.setId_empleado(rs.getString("id_empleado"));
                    ob1.setNombre(rs.getString("nombre"));
                    obj.setObj_emp(ob1);
                    obj.setPrecio_total(rs.getDouble("precio_total"));
                    arreglo.add(obj);
                }while(rs.next());
            }
        }catch(Exception error) {
            System.out.println("Error en Listado: " + error.getMessage());
            error.getMessage();
        }
        return arreglo;
    
    }
      
      
}
   
